home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
SPACE 1
/
SPACE - Library 1 - Volume 1.iso
/
utilitys
/
159
/
card.pas
next >
Wrap
Pascal/Delphi Source File
|
1988-03-30
|
16KB
|
650 lines
Program Card_Maker;
Const
{$I Gemconst.Pas}
Type
Col1 = Array [1..128] Of String[80];
Col2 = Array [1..128] Of String[80];
Col3 = Array [1..128] Of String[80];
Col4 = Array [1..128] Of String[80];
Col5 = Array [1..128] Of String[80];
OUT = Array [1..5] of Boolean;
{$I Gemtype.Pas}
Var Run,MF,LI,Ci,RS,
MRF :Boolean;
Command,
Title :String[80];
H,TH,
CNum,
Cl1,Cl2,Cl3,
Cl4,Cl5,
Dummy,TST,
IST :Integer;
Sauto,Ce :Char;
Data1 :Col1;
Data2 :Col2;
Data3 :Col3;
Data4 :Col4;
Data5 :Col5;
t :1..5;
C1,C2,C3,
C4,C5 :1..100;
Flag :out;
s :1..200;
cf :Integer;
XStyle :Char;
Style :Char;
name :String[80];
Fv :File of text;
{$I Gemsubs.Pas}
{$I Screen.Pas}
Procedure GRInit;
Begin
s:=8;
TST:=$00;
IST:=$00;
Mf:=False;
LI:=False;
Ci:=False;
cf:=2;
Mrf:=false;
End;
Procedure TClean;
Begin
NormVideo;
Gotoxy(24,1);
Write(' ');
Write(' ');
End;
Procedure Clean;
Begin
InverseVideo;
Gotoxy(24,1);
Write(' ');
Write(' ');
End;
Procedure Get_Command;
Begin
Clean;
InverseVideo;
Gotoxy(24,5);
Write(' ');
Write(' ');
Gotoxy(24,25);
Write('Text ',Xstyle);
Write(' - Title ',style);
If (Mf<>false) or (Mrf<>false) Then Write(' Frame');
If (LI<>false) Then Write(' Line');
If (Flag[1]=true) Then write(' 1');
If (Flag[2]=true) Then write(' 2');
If (Flag[3]=true) Then write(' 3');
If (Flag[4]=true) Then write(' 4');
If (Flag[5]=true) Then write(' 5');
Write(' Tl=',H);
Write(' Tx=',th);
Write(' V 1.1');
Gotoxy(24,1);
Write('Command>');
CursOn;
Readln(Command);
InverseVideo;
End;
Procedure text_Height ( height : integer );
Type Ctrl_Parms = Array [ 0..11 ] of integer;
Int_in_Parms = Array [ 0..15 ] of integer;
Int_Out_Parms = Array [ 0..45 ] of integer;
Pts_in_Parms = Array [ 0..11 ] of integer;
Pts_Out_Parms = Array [ 0..11 ] of integer;
Var
Control :Ctrl_Parms;
int_in :Int_in_Parms;
int_out :Int_out_parms;
pts_in :Pts_in_Parms;
pts_out :Pts_Out_Parms;
Procedure VDI_Call( cmd, sub_cmd, nints, npts : Integer;
Var ctrl:ctrl_parms;
Var int_in:Int_in_Parms; Var int_out:int_out_parms;
Var pts_in:pts_in_parms; Var pts_out:pts_out_parms;
translate :Boolean );
External;
Begin
pts_in[0]:= 0;
pts_in[1]:= height;
VDI_Call( 12,0,0,2, control, int_in, int_out, pts_in, pts_out, false );
End;
Procedure Set_Title;
Begin
Clean;
InverseVideo;
Gotoxy(24,1);
Write('Enter size of title in pixels :');
InverseVideo;
Readln(H);
Clean;
InverseVideo;
Gotoxy(24,1);
Write('Enter title :');
InverseVideo;
Readln(title);
End;
Procedure Set_Colomns;
Begin
Clean;
InverseVideo;
Gotoxy(24,1);
Write('How many colomns will you have? ( Max = 5 ) :');
InverseVideo;
Readln(CNum);
Clean;
InverseVideo;
Gotoxy(24,1);
Write('Automatic setting (y/n) ? :');
InverseVideo;
Readln(SAuto);
If (SAuto='n') Or (Sauto='N') Then
Begin
Clean;
InverseVideo;
Gotoxy(24,1);
Write('Enter colomn length #1 :');
InverseVideo;
Readln(CL1);
Clean;
InverseVideo;
Gotoxy(24,1);
Write('Enter colomn length #2 :');
InverseVideo;
Readln(CL2);
Clean;
InverseVideo;
Gotoxy(24,1);
Write('Enter colomn length #3 :');
InverseVideo;
Readln(CL3);
Clean;
InverseVideo;
Gotoxy(24,1);
Write('Enter colomn length #4 :');
InverseVideo;
Readln(CL4);
Clean;
InverseVideo;
Gotoxy(24,1);
Write('Enter colomn length #5 :');
InverseVideo;
Readln(CL5);
End
Else
Begin
Cl1:=trunc((80/Cnum));
Cl2:=trunc((80/Cnum));
Cl3:=trunc((80/Cnum));
Cl4:=trunc((80/Cnum));
Cl5:=trunc((80/Cnum));
End;
End;
Procedure Enter_Data;
Var which :Integer;
Sentence :String[80];
j,k :1..129;
Begin
Clean;
InverseVideo;
Gotoxy(24,1);
Write('Start entering at colomn #');
inverseVIdeo;
readln(which);
If (Which<1) then which:=1;
If (Which>5) Then which:=5;
Sentence:='????';
Clean;
If (flag[which]=true) And (which=1) Then
begin
Gotoxy(24,1);
Write('Start at row number :');
Readln(k);
If (k>C1) or (k>128) or (k<1) Then k:=C1;
End;
If (flag[which]=true) And (which=2) Then
begin
Gotoxy(24,1);
Write('Start at row number :');
Readln(k);
If (k>C2) or (k>128) or (k<1) Then k:=C2;
End;
If (flag[which]=true) And (which=3) Then
begin
Gotoxy(24,1);
Write('Start at row number :');
Readln(k);
If (k>C3) or (k>128) or (k<1) Then k:=C3;
End;
If (flag[which]=true) And (which=4) Then
begin
Gotoxy(24,1);
Write('Start at row number :');
Readln(k);
If (k>c4) or (k>128) or (k<1) Then k:=C4;
End;
If (flag[which]=true) And (which=5) Then
begin
Gotoxy(24,1);
Write('Start at row number :');
Readln(k);
If (k>c5) or (k>128) or (k<1) Then k:=C5;
End;
If (flag[which]=false) Then k:=1;
j:=k;
Flag[which]:=true;
Repeat
Clean;
InverseVideo;
If which=1 Then
Begin
Gotoxy(24,(4+CL1));
Writeln('<');
End;
If which=2 Then
Begin
Gotoxy(24,(4+CL2));
Writeln('<');
End;
If which=3 Then
Begin
Gotoxy(24,(4+CL3));
Writeln('<');
End;
If which=4 Then
Begin
Gotoxy(24,(4+CL4));
Writeln('<');
End;
If which=5 Then
Begin
Gotoxy(24,(4+CL5));
Writeln('<');
End;
Gotoxy(24,1);
Write('#',j,' >');
InverseVideo;
Readln(sentence);
If (which = 1) and (Length(sentence)>Cl1) then
Begin
Clean;
InverseVideo;
Gotoxy(24,1);
Write('#',j,' >');
InverseVideo;
Readln(sentence);
End;
if (which = 2) and (Length(sentence)>Cl2) then
Begin
Clean;
InverseVideo;
Gotoxy(24,1);
Write('#',j,' >');
InverseVideo;
Readln(sentence);
End;
if (which = 3) and (Length(sentence)>Cl3) then
Begin
Clean;
InverseVideo;
Gotoxy(24,1);
Write('#',j,' >');
InverseVideo;
Readln(sentence);
End;
if (which = 4) and (Length(sentence)>Cl4) then
Begin
Clean;
InverseVideo;
Gotoxy(24,1);
Write('#',j,' >');
InverseVideo;
Readln(sentence);
End;
if (which = 5) and (Length(sentence)>Cl5) then
Begin
Clean;
InverseVideo;
Gotoxy(24,1);
Write('#',j,' >');
InverseVideo;
Readln(sentence);
End;
j:=j+1;
If j>128 Then j:=128;
If (sentence<>'Stop') then
begin
if (which=1) Then Data1[j]:=sentence;
if (which=2) Then Data2[j]:=sentence;
if (which=3) Then Data3[j]:=sentence;
if (which=4) Then Data4[j]:=sentence;
if (which=5) Then Data5[j]:=sentence;
end;
Until sentence='Stop';
if (which=1) Then C1:=j;
if (which=2) Then C2:=j;
if (which=3) Then C3:=j;
if (which=4) Then C4:=j;
if (which=5) Then C5:=j;
End;
Procedure Set_Text;
Begin
Clean;
InverseVideo;
Gotoxy(24,1);
Write('Enter text size :');
InverseVideo;
Readln(TH);
End;
Procedure Set_S;
Begin
Clean;
InverseVideo;
Gotoxy(24,1);
Write('Enter spacing ( in pixels, max = 200) :');
InverseVideo;
Readln(s);
While (S>200) or (S<1) Do
Begin
Clean;
InverseVideo;
Gotoxy(24,1);
Write('Enter spacing ( in pixels, max = 200) :');
InverseVideo;
Readln(s);
End;
End;
Procedure Set_Center;
begin
Clean;
InverseVideo;
Gotoxy(24,1);
Write('Centering title (y/n) ? :');
InverseVideo;
Readln(ce);
Clean;
InverseVideo;
Gotoxy(24,1);
Write('Centering factor :');
InverseVideo;
Readln(cf);
End;
Procedure TxStyle;
Begin
Clean;
InverseVideo;
Gotoxy(24,1);
Write('Text style:');
InverseVideo;
Readln(XStyle);
If (xStyle='a') Or (xStyle='A') Then TST:=$00;
If (xStyle='b') Or (xStyle='B') Then TST:=$01;
If (xStyle='c') Or (xStyle='C') Then TST:=$02;
If (xStyle='d') Or (xStyle='D') Then TST:=$04;
If (xStyle='e') Or (xStyle='E') Then TST:=$08;
If (xStyle='f') Or (xStyle='F') Then TST:=$10;
If (xStyle='g') Or (xStyle='G') Then TST:=$20;
End;
Procedure TiStyle;
Begin
Clean;
InverseVideo;
Gotoxy(24,1);
Write('Title style:');
InverseVideo;
Readln(Style);
If (Style='a') Or (Style='A') Then IST:=$00;
If (Style='b') Or (Style='B') Then IST:=$01;
If (Style='c') Or (Style='C') Then IST:=$02;
If (Style='d') Or (Style='D') Then IST:=$04;
If (Style='e') Or (Style='E') Then IST:=$08;
If (Style='f') Or (Style='F') Then IST:=$10;
If (Style='g') Or (Style='G') Then IST:=$20;
End;
Procedure RFormat;
Var which :1..5;
l :1..128;
Begin
Clean;
InverseVideo;
Gotoxy(24,1);
Write('Refromat colomn #');
Readln(which);
If which>5 Then which:=5;
If which<1 Then which:=1;
Clean;
InverseVideo;
Gotoxy(24,1);
Write('Reformating Colomn #',which);
InverseVideo;
If which=1 Then
For l:=1 to C1 Do
If (Length(Data1[l]))>Cl1 Then
Delete(Data1[l],cl1,(Length(Data1[l])-cl1));
If which=2 Then
For l:=1 to C2 Do
If (Length(Data2[l]))>Cl2 Then
Delete(Data2[l],cl2,(Length(Data2[l])-cl2));
If which=3 Then
For l:=1 to C3 Do
If (Length(Data3[l]))>Cl3 Then
Delete(Data3[l],cl3,(Length(Data3[l])-cl3));
If which=4 Then
For l:=1 to C4 Do
If (Length(Data4[l]))>Cl4 Then
Delete(Data4[l],cl4,(Length(Data4[l])-cl4));
If which=5 Then
For l:=1 to C5 Do
If (Length(Data5[l]))>Cl5 Then
Delete(Data5[l],cl5,(Length(Data5[l])-cl5));
End;
Procedure PPrint;
Var dum :char;
Begin
TClean;
InverseVideo;
Gotoxy(24,1);
Write('If you want to print this paper, use the Alternate Help dump.');
InverseVideo;
CursOff;
Readln(dum);
TClean;
readln(dum);
End;
Procedure Scale_Line;
Var yesno :Char;
Begin
Clean;
Gotoxy(24,1);
Write('Scale line (y/n) ? :');
Readln(yesno);
If (yesno='y') or (yesno='Y') Then rs:=true
Else rs:=false;
End;
Procedure Proc;
Begin
If (Command='QUIT') Or (Command='Quit') Or (Command='quit') Then
Run:=false;
If (Command='EXIT') Or (Command='Exit') Or (Command='exit') Then
Run:=false;
If (Command='BYE') Or (Command='Bye') Or (Command='bye') Then
Run:=false;
If (Command='TITLE') Or (Command='Title') Or (Command='title') Then
Set_Title;
If (Command='COLOMNS') Or (Command='Colomns') Or (Command='colomns') Then
Set_Colomns;
If (Command='ENTER') Or (Command='Enter') Or (Command='enter') Then
Enter_Data;
If (Command='TEXT') Or (Command='Text') Or (Command='text') Then
Set_text;
If (Command='SPACING') Or (Command='Spacing') Or (Command='spacing') Then
Set_s;
If (Command='CENTER') Or (Command='Center') Or (Command='center') Then
Set_center;
If (Command='TSTYLE') Or (Command='Tstyle') Or (Command='tstyle') Then
TiStyle;
If (Command='XSTYLE') Or (Command='Xstyle') Or (Command='xstyle') Then
TxStyle;
If (Command='FRAME') Or (Command='Frame') Or (Command='frame') Then
MF:=True;
If (Command='RFRAME') Or (Command='Rframe') Or (Command='rframe') Then
MRF:=True;
If (Command='TLINE') Or (Command='Tline') or (Command='tline') Then
LI:=True;
If (Command='CLINE') Or (Command='Cline') or (Command='cline') Then
CI:=True;
If (Command='GINIT') Or (Command='Ginit') or (Command='ginit') Then
GRInit;
If (Command='REFORMAT') Or (Command='Reformat') or (Command='reformat') Then
RFormat;
If (Command='PRINT') Or (Command='Print') or (Command='print') Then
PPRint;
If (Command='SLINE') Or (Command='Sline') or (Command='sline') Then
Scale_Line;
End;
Procedure Out_Put;
Var i,j,k :Integer;
Begin
Clrscr;
CursOff;
If Mrf=true Then
Frame_Round_Rect( 0,0,639,180 );
If title<>'@' Then
Begin
text_Style(IST);
text_Height(H);
If Ce='n' Then
Draw_String(5,((H)+3),title)
Else
Begin
i:=(((Length(title))*(H div cf)));
j:=(640-i) div 2;
Draw_String(J,((H)+3),title)
End;
If (Li=true) and (rs=false) Then
Line(5,(H+7),634,(H+7));
if (li=true) and (rs=false) Then
Line(5,(H+7),((Length(title))*8),(H+7));
End;
Text_Height(TH);
Text_Style(TST);
If flag[1]=true then
For i:=1 to C1 Do
Draw_String(5,((i*(th+s))+h+10),Data1[i]);
If flag[2]=true then
For i:=1 to C2 Do
Draw_String((Cl1*8+th),((i*(th+s))+h+10),Data2[i]);
If flag[3]=true then
For i:=1 to C3 Do
Draw_String(((Cl2+Cl1)*8+th),((i*(th+s))+h+10),Data3[i]);
If flag[4]=true then
For i:=1 to C4 Do
Draw_String(((Cl3+cl1+cl2)*8+th),((i*(th+s))+h+10),Data4[i]);
If flag[5]=true then
For i:=1 to C5 Do
Draw_String(((Cl3+Cl2+Cl1+Cl4)*8+th),((i*(th+s))+h+10),Data5[i]);
If Mf=true Then
Frame_Rect( 0,0,639,180 );
if ci=true Then
Begin
If Flag[2]=true then
Line((Cl1*8+(th div cf)-13),((2*H)+7),(Cl1*8+(th div cf)-13),(176));
If Flag[3]=true then
Line(((Cl2+Cl1)*8+(th div cf)-13),((2*H)+7),(Cl2*8+(th div cf)-13),(176));
If Flag[4]=true then
Line(((Cl2+Cl1+Cl3)*8+(th div cf)-13),((2*H)+7),(Cl3*8+(th div cf)-13),(176));
If Flag[5]=true then
Line((640-(Cl4*8+(th div cf)-13)),((2*H)+7),(Cl4*8+(th div cf)-13),(176));
End;
End;
Begin
If init_gem>=0 Then
Begin
Rs:=false;
Run:=true;
Init_Mouse;
Hide_Mouse;
title:='@';
Ce:='n';
Clrscr;
CursOn;
H:=8;
TH:=4;
s:=8;
TST:=$00;
IST:=$00;
Mf:=False;
LI:=False;
Ci:=False;
cf:=2;
Mrf:=false;
Xstyle:='A';
style:='A';
For t:=1 to 5 Do
Flag[t]:=false;
Dummy:=
Do_Alert('[1][The Card Maker V 1.1 | Programmed by Yaron Kidron][ OK ]',0);
While run=true Do
Begin
Get_Command;
Proc;
Out_Put;
End;
End;
CursOff;
Show_Mouse;
Exit_Gem;
NormVideo;
End.